As companies everywhere are collecting, storing, and analyzing huge amounts of data from ever-increasing sources, they're discovering that not all data is equal. Some must support mission-critical applications and be constantly available. Other data may be time-sensitive. And still other data is retained simply for historical or regulatory requirements.
One way businesses have chosen to deal with these different types of data is by employing multiple analytical systems; each tuned for its data and workload. These multi-system environments can be very effective when they're designed to add value, not complexity. However, a multi-system environment introduces new challenges such as cost, multiple products, operational complexity, and the potential for fragmented or multiple versions of data.
In previous implementations of database load balancer solutions, such as the systems described in U.S. Pat. Nos. 8,209,696, and 8,209,699, referenced above, any inconsistency between systems that was detected by the load balancer would result in a state level change that applied to the system as a whole. For example, a SQL query that performed an update on a table but returned a different activity count on each system, e.g., number of rows modified, would result in one or more of the systems being marked unsynchronized—in other words, affecting all other tables on the system as well. Likewise, transient conditions, such as database free space issues, that could be corrected would also apply to the system as a whole, rather than a more restricted subset of tables to which the condition actually applied. It should also be noted that standard administrative operations, such as taking a database component offline or making it read-only could only be performed at the system level.
Teradata Corporation has introduced an improved Teradata Unity product that helps a business route intelligence query workloads between two or more relational database production systems to load balance and maximize utilization of the systems. In the improved Teradata Unity product, existing database load balancer algorithms have been expanded to allow for a more granular processing of the error conditions that are detected in the course of normal operation. Specifically, the new algorithms allow for the application of operational state, e.g., administrative tasks and/or transient or inconsistency errors, to apply at a subsystem level. In the discussion below, these algorithms are described as occurring at a database table level, but the algorithms could equally apply to less granular entities, such as databases, or more granular entities, such as database table rows. These novel extensions to the underlying algorithms provide a more correct representation of the state of the systems, i.e., the cluster, as a whole while also allowing for the continued operation of the load balancing for other applications and queries that utilize the affected system but not the affected tables.